package com.briup.day08;

public class Super {
    public Super() {
        // 在show()方法前存在一个被省略编写的this.，
        // this在构造器中表示的是当前正在被创建的对象，
        // 如果new的是Sub()，那么创建的就是子类对象，
        // 子类对象在调用自身构造器时，会默认调用父类的无参构造器，
        // 那么在此时的父类无参构造器中，这个this还是当前正在被创建的子类对象；
        // 那么当前被调用的show()方法就是子类重写后的show()方法
        show();
    }

    public void show() {
        System.out.println("这是父类的show方法");
    }
}

class Sub extends Super {
    public void show() {
        System.out.println("这是子类的show方法");
    }
}

class Sub2 extends Super {
    @Override
    public void show() {
        System.out.println("这是子类2的show");
    }
}

class SuperTest {
    public static void main(String[] args) {
        Sub sub = new Sub();
        Sub2 sub2 = new Sub2();
    }
}
